Vyasa theming has two different jobs: shape the site chrome that render_layout() assembles, and shape the article body that markdown_rendering.py emits. Those jobs look similar in the browser, but they load through different paths and fail for different reasons. This guide is about choosing the right layer before you start writing selectors. By the end, you should know when a change belongs in .vyasa, global.css, or folder-scoped custom.css.